<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    var shen = { name: '李煜', age: 30, sex: true, hobby: ['打球', '听音乐'] };
    function copyshen(shen) {

       //判断shen是否为array类型，如果是的话就将shen2设置为空数组，如果不是将shen2设置为空对象
        var shen2 = Array.isArray(shen) ? [] : {};

        //利用for in循环遍历shen中的属性名
        for (var key in shen) {
            //判断shen[key]的值是否为对象类型
            if (typeof shen[key] == 'object') { 
                //如果是就利用循环遍历加递归遍历属性值
                shen2[key] = copyshen(shen[key])
            } else { 
                // 如果不是就直接拷贝
                shen2[key] = shen[key];
            }
        }
        return shen2;
    }
    //深拷贝
    var shen2 = copyshen(shen);

    console.log(shen, shen2);
    shen.hobby.push('coding');
    console.log(shen, shen2);

</script>